package org.example.springioc.DI;

import jakarta.annotation.Resource;
import org.example.springioc.Config.People;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component;

@Component
public class Controller4 {

    //方法1
//    使用@Primary

/*    方法2
    @Qualifier("p1")
    @Autowired
    private People pp;*/
    //如果出现一个资源存在多个bean时候，会出现错误


//    方法3
    @Resource(name = "p1")
    private People pp;

    public void say(){
        System.out.println(pp);
        System.out.println("hello Controller4");
    }
}
/*              出错原因
会先根据类进行查找，如果只有一个，那么会直接返回，
如果没有找到，会报错
如果找到多个，会根据名字加类名进行查找，如果有一个，会直接返回，如果有多个，则会报错


*/

/*               解决方案
使用@Primary注解，这个使用bean 资源上，如果没有找到，则会默认返回这个
使用@Qualifier注解，使用在变量上，进行重命名，找这个指定的名称


*/